/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO.Firebird;

import Biblioteca.VerificacaoErros;
import DAO.DAOInstanciaSubFase;
import InstanciaJogo.FasesJogo.InstanciaSubFase;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.Types;
import javax.swing.JOptionPane;

/**
 * DAOInstanciaSubFaseFirebird

 Versao 1.0

 Data Criação 10/11/2013
 *
 * @author Igor
 */
public class DAOInstanciaSubFaseFirebird extends DAOConexaoFirebird implements DAOInstanciaSubFase {
    //Outros metodos
    @Override
    public InstanciaSubFase buscaInstanciaSubFase(long idJogo) {

        return null;
    }

    @Override
    public long gravaInstanciaSubFase(long idJogo, long idFase, long idSubFase) {
        long vReturn = -1;
        try {
            CallableStatement cs;
            cs = this.con.getCon().prepareCall("call GRAVA_INSTANCIA_SUB_FASE(?,?,?,?)");

            cs.setLong(1, idJogo);
            cs.setLong(2, idFase);
            cs.setLong(3, idSubFase);
            cs.registerOutParameter(4, Types.NUMERIC);
            cs.executeQuery();

            vReturn = cs.getLong(4);
            this.con.getStm().executeBatch();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, VerificacaoErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
        return vReturn;
    }

    @Override
    public long buscaPorcentagemAcerto(long idInstanciaSubFase) {
        long porcentagemAcerto = 0;
        ResultSet result = null;
        try {
            result = this.select.executeQuery("select count(*)*100/ (select count(*) from IMAGEM_SUB_FASE b where b.ID_INSTANCIA_SUB_FASE = "+idInstanciaSubFase+") as total\n"
                    + "from IMAGEM_SUB_FASE a\n"
                    + "where a.ID_INSTANCIA_SUB_FASE = "+idInstanciaSubFase+"\n"
                    + "and a.ACERTOU_RESPOSTA = 1");

            while (result.next()) {
                porcentagemAcerto = result.getLong("TOTAL");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, VerificacaoErros.retornaMensagemErro(e), "Erro!", JOptionPane.ERROR_MESSAGE);
        }

        return porcentagemAcerto;
    }

}
